package com.errorfinding.rabbitmq.five;

import com.errorfinding.rabbitmq.util.RabbitMqUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 消费者
 * 接收消息
 * 扇出模式 fauout 发布订阅模式
 */
public class ReceiveLogs01 {

    public static final String exchange_name = "logs";

    public static void main(String[] args) throws IOException, TimeoutException {
        //创建信道
        Channel channel = RabbitMqUtils.getChannel();
        //声明交换机 扇出类型（广播）
        channel.exchangeDeclare(exchange_name,"fanout");
        //声明队列 临时队列
        /**
         * 生成一个临时的队列 队列名称是随机的
         * 当消费者断开与队列连接 队列就会自动删除
         */
        String queue = channel.queueDeclare().getQueue();

        /**
         * 绑定交换机与队列
         * 参数1.队列名称
         * 参数2.交换机名称
         * 参数3.指定标识
         */
        channel.queueBind(queue,exchange_name,"");
        System.out.println("01等待接收消息，把接收到消息打印在屏幕上。。。。");
        //接收消息
        DeliverCallback deliverCallback = (tag,message)->{
            System.out.println("01打印接收到的消息："+new String(message.getBody()));
        };

        channel.basicConsume(queue,true,deliverCallback,(tag)->{});


    }
}
